//opcode

`define R_type             7'b0110011
`define R_type_extend      7'b0111011
`define I_type             7'b0010011
`define I_type_extend      7'b0011011  
`define I_type_load        7'b0000011
`define S_type             7'b0100011
`define B_type             7'b1100011
`define INST_JAL           7'b1101111
`define INST_JALR          7'b1100111
`define INST_FENCE         7'b0001111
`define INST_LUI           7'b0110111
`define INST_AUIPC         7'b0010111
`define INST_NOP_OP        7'b0000001
`define INST_FALT          7'b1101011    // 自定义falt      0x6b
`define INST_PUTCH         7'b1111011    // 自定义putch     0x7b
`define CSR_type           7'b1110011



//funct3
//R-type
`define INST_ADDSUB        3'b000
`define INST_SLL           3'b001
`define INST_SLT           3'b010
`define INST_SLTU          3'b011
`define INST_XOR           3'b100
`define INST_SRLSRA        3'b101
`define INST_OR            3'b110
`define INST_AND           3'b111 
//R-type-extend
`define INST_ADDWSUBW      3'b000
`define INST_SLLW          3'b001
`define INST_SRLWSRAW      3'b101
//I-type
`define INST_ADDI          3'b000
`define INST_SLTI          3'b010
`define INST_SLTIU         3'b011
`define INST_XORI          3'b100
`define INST_ORI           3'b110
`define INST_ANDI          3'b111
`define INST_SLLI          3'b001
`define INST_SRLISRAI      3'b101
//I-type-extend
`define INST_ADDIW         3'b000
`define INST_SLLIW         3'b001
`define INST_SRLIWSRAIW    3'b101
//L-type
`define INST_LB            3'b000
`define INST_LH            3'b001
`define INST_LW            3'b010
`define INST_LBU           3'b100
`define INST_LHU           3'b101
//L-type-extend (opcpde与L-type相同)
`define INST_LWU           3'b110
`define INST_LD            3'b011
//B-type
`define INST_BEQ           3'b000
`define INST_BNE           3'b001
`define INST_BLT           3'b100
`define INST_BGE           3'b101
`define INST_BLTU          3'b110
`define INST_BGEU          3'b111
//S-type
`define INST_SB            3'b000
`define INST_SH            3'b001
`define INST_SW            3'b010
//S-type-extend
`define INST_SD            3'b011
// CSR-type
`define INST_CSRRW         3'b001
`define INST_CSRRS         3'b010
`define INST_CSRRC         3'b011
`define INST_CSRRWI        3'b101
`define INST_CSRRSI        3'b110
`define INST_CSRRCI        3'b111


`define INST_NOP           32'h00000001
//`define INST_MRET          32'h30200073
//`define INST_RET           32'h00008067
//`define INST_ECALL         32'h73
//`define INST_EBREAK        32'h00100073




